perm filename PIX.SAI[PIX,HPM]5 blob sn#032889 filedate 1973-04-01 generic text, type T, neo UTF8
00100	BEGIN "PIX"
00200	
00300	REQUIRE "HELIB[1,3]" LIBRARY;
00400	REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
00500	REQUIRE "SOBMAT[SYS,HE]" LOAD_MODULE;
00600	REQUIRE 2000 STRING_SPACE;
00700	REQUIRE "⊂⊃||" DELIMITERS;
00800	
00900	DEFINE α=⊂COMMENT⊃, EXT=⊂EXTERNAL⊃, INT=⊂INTEGER⊃, PRO=⊂PROCEDURE⊃,
01000		CRLF=⊂'15&'12⊃, BHEAD(BUF)=⊂(BUF+1) LAND '777777⊃, REF=⊂REFERENCE⊃,
01100		RED=⊂0⊃, BLUE=⊂1⊃, GREEN=⊂2⊃, CLEAR=⊂3⊃;
01200	EXT PRO PICINI(INT CHAN, FILE, EXTEN, PPN;REF BOOLEAN FAIL;INT ARRAY STOR);
01300	EXT PRO PICRD(REF BOOLEAN FAIL; INT ARRAY STOR);
01400	EXT PRO PICWR(INT CHAN, FILE, EXTEN, PPN; REF BOOLEAN FAIL; INT ARRAY STOR);
01500	EXT PRO RELCOR(INT IOWD);
01600	EXT INT PRO GETCOR(INT SIZE);
01700	EXT PRO INP;
01800	EXT INT PRO GIOWD(INT ARRAY BUF);
01900	EXT PRO EYECAL(INT SIZE, FRAM, FLAG; INT ARRAY BUF);
02000	EXT PRO CWHEEL(INT CODE);
02100	EXT PRO TVINN;
02200	EXT PRO PRDUMP;
02300	EXT PRO PORTR;
02400	EXTERNAL PROCEDURE SPWON(INTEGER TIC;REFERENCE INTEGER ADDR);
02500	EXTERNAL PROCEDURE CALLEN;
02600	EXTERNAL PROCEDURE SPWOFF;
02700	EXT INT TVWORD, FLINE, LLINE, RSIDE, LSIDE, TCLIP, BCLIP, PRTBUF,
02800		L1, L2, L3, P1,P2,P3,STATUS,TSERVO,LENS,TVCAM;
02900	
03000	SAFE INT ARRAY PNTRS[1:25];
03100	SAFE REAL ARRAY CAMERA_MODEL[1:10,1:3],PPOT0,PPOTD,TPOT0,TPOTD,FPOT0,FPOTD,
03200		MART,SWING,FOC,FOCLEN0,FOCLENG[1:4],DP,P0[1:4,1:3],PP[1:4,1:2];
03300	INT N, LIN, LINN, I, II, III, ANS, TVLENG, RFNAM, RFNUM, SEQNO;
03400	REAL PANPOT, FOCPOT, TILPOT;
03500	LABEL RUSE, LOOP, TKE, SKE;
03600	STRING STR, INS;
03700	PRELOAD_WITH "R","B","G"; STRING ARRAY CFIRST[1:3];
03800	SAFE INTEGER ARRAY PICALLOC[1:3];  α  allocation table for data blocks;
03900	α	first we initialize the world;
04000		OUTSTR("TYPE ? FOR HELP"&CRLF);
04100		SEQNO←0;
04200		QUICK_CODE '051000000000 '10,0; END;
04300		INS ← INCHWL;
04400		CLRBUF;
04500		WHILE LENGTH(INS) ≥ 2 ∧ INS[1 TO 1] ≠ ";" DO INS ← INS[2 TO ∞];
04600		LIN ← IF INS[1 TO 1]=";" THEN CVO(INS[2 TO ∞]) ELSE '15;
04700		LINN ← 1;
04800	LOOP:	TVCAM ← IF (LIN LAND 7) = 1 THEN 1 ELSE
04900			IF (LIN LAND 7) = 2 THEN 2 ELSE 
05000			IF (LIN LAND 7) = 3 THEN 3 ELSE 0;
05100		START_CODE
05200			LABEL XX1,GOO;
05300			JRST GOO;
05400		XX1:	'401400000000 LIN;
05500		GOO:	MOVE 1,LINN;
05600			LSH 1,18;
05700			IOR  1,XX1;
05800			CALLI 1,'400070;
05900			SKIP	0;
06000		END;
06100		TCLIP ← 0;
06200		BCLIP ← 7;
06300		PICALLOC[1] ← PICALLOC[2] ← PICALLOC[3] ← PNTRS[1] ← 0;
06400		ARRBLT(PNTRS[2],PNTRS[1],24);
06500				FLINE←'13;
06600				LLINE←'373;
06700				RSIDE←'512;
06800				LSIDE←'13;
06900			TVLENG ← ((RSIDE-LSIDE)/9+1)*(LLINE-FLINE+1);
07000			PICALLOC[1] ← GETCOR(TVLENG);
07100			IF TVCAM = 1 THEN
07200			BEGIN
07300			PICALLOC[2]←GETCOR(TVLENG);
07400			PICALLOC[3]←GETCOR(TVLENG);
07500			END;
07600			IF (RFNUM ← RFNUM - 1)≥0 THEN
07700			BEGIN
07800			I←'40;
07900			GO TO TKE;
08000			END;
08100			OUTSTR("*");
08200				IF (I ← INCHRW) = '175 THEN
08300					BEGIN
08400					OUTSTR("CHANNEL=");
08500					LIN←CVO(INCHWL);
08505					IF LIN≥'40 THEN LIN←LIN LAND '17
08510					ELSE LIN←1 LSH (35-LIN);
08600					GO TO RUSE;
08700					END ELSE
08800				IF I = '12 THEN
08900					BEGIN
09000					OUTSTR("LINE=");
09100					LINN←CVO(INCHWL);
09200					GO TO RUSE;
09300					END ELSE
09400				IF I = "?" THEN
09500		BEGIN
09600		OUTSTR(CRLF&"THIS PROGRAM ALLOWS YOU TO SNAP DDVID
09700	COMPATIBLE PICTURES FROM ANY VIDEO SOURCE
09800	WITH A MINIMUM OF FUSS. THE DEFAULT SOURCE	
09900	(CHANNEL) IS THE TV RECIEVER IN THE LOUNGE
10000	
10100	TYPE SPACE TO TAKE A PICTURE
10200	
10500	TYPE A DIGIT FOR RAPID FIRE MODE
10600	   n FILES CALLED PIXn.mmm WILL BE PRODUCED
10700	   (n BEING YOUR DIGIT, AND mmm A SEQUENCE
10800	   NUMBER), ONE EVERY FEW SECONDS
10900	
11000	FOR CHAN 51 (THE OLD HAND EYE CAMERA)
11100	YOU MAY ALSO TYPE
11200	   C - TO TAKE A COLOR PICTURE (THREE FILES)
11300	   {R,G,B} - TO TAKE A FILTERED PICTURE
11400	
11450	TYPE ALTMODE TO CHANGE CHANNEL
11500	 CHANNELS ARE:
11600	   47 - VIDEO SYNTHESIZER
11700	   51 - OLD (COHU) HAND EYE CAMERA
11800	   52 - NEW (SIERRA) HAND EYE CAMERA
11900	   53 - BAUMGART'S LINE (THE FONT CAMERA, MAYBE)
12000	   55 - LOUNGE TV RECEIVER
12100	   nn - ANY DD CHANNEL YOU CAN LOOK AT WITH <ESC>nnS
12200	
12300	IF YOU DECIDE YOU DON'T WANT A PICTURE AFTER ALL
12400	SIMPLY ANSWER THE 'FILE=' WITH A CARRIAGE RETURN,
12500	OTHERWISE NAME A FILE FOR IT TO BE STORED ON
12550	
12575	YOU MAY MONITOR THE PICTURE TAKING PROCESS AT
12587	DD TERMINALS BY HITTING <ESC>54S. THE DIGITIZER
12593	CURSOR WILL CAUSE THE IMAGE TO FLASH AS A FRAME
12596	IS TAKEN"&CRLF);
12600		CLRBUF;
12700		GO TO RUSE;
12800		END ELSE
12900			IF I≥"0" ∧ I≤"9" THEN
13000			BEGIN
13100			RFNUM←(RFNAM←I)-"0";
13200			GO TO RUSE;
13300			END;
13400	TKE:		I ← IF I > '140 ∧ I < '173 THEN I - '40 ELSE I;
13500			II ←	IF I = '103 THEN RED ELSE
13600				IF I = '102 THEN BLUE ELSE
13700				IF I = '107 THEN GREEN ELSE
13800				IF I = '122 THEN RED ELSE CLEAR;
13900			III ←	IF I = '103 ∧ TVCAM = 1 THEN GREEN ELSE II;
14000			N ← 0;
14100			FOR I ← II STEP 1 UNTIL III DO
14200			BEGIN EXTERNAL INTEGER IND;
14300				IF TVCAM = 1 THEN
14400				BEGIN
14500					CWHEEL(6);
14600					IF IND ≠ I THEN
14700					BEGIN INTEGER M;
14800						CWHEEL(I);
14900						M ← 12000;
15000						WHILE M ← M - 1 DO;
15100					END;
15200				END;
15300				TVWORD ← PICALLOC[N ← N + 1];
15400				TVINN;
15500			END;
15600			BEGIN "DSKOUT"
15700			INTEGER FILE, PPN, EXTEN, FAIL;
15800			STRING FILOUT;
15900			LABEL LOOP3;
16000	LOOP3:		IF RFNUM≥0 THEN
16100			BEGIN
16200			STR←"PIX"&RFNAM&"."&CVS(SEQNO←SEQNO+1);
16300			GO TO SKE;
16400			END;
16500			OUTSTR("FILE=");
16600			STR ← INCHWL;
16700	SKE:		IF LENGTH(STR)≠0 THEN
16800			FOR I ← 1 STEP 1 UNTIL III-II+1 DO
16900			BEGIN
17000			PNTRS[1]←PICALLOC[I];
17100			FILOUT←IF II=III THEN STR ELSE CFIRST[I]&STR;
17200			FILE←CVFIL(FILOUT,EXTEN,PPN);
17300			PICWR(1,FILE,EXTEN,PPN,FAIL,PNTRS);
17400			IF FAIL THEN BEGIN USERERR(0,0,"WRITING OF FILE "
17500				&FILOUT&" FAILED"); GO TO LOOP3;END;
17600			OUTSTR("FILE "&FILOUT&" WRITTEN OUT"&CRLF);
17700			END;
17800			END "DSKOUT";
17900	α	return for next picture;
18000	
18100	RUSE:	FOR I ← 1 STEP 1 UNTIL 3 DO
18200			BEGIN
18300			IF PICALLOC[I] THEN RELCOR(PICALLOC[I]);
18400			PICALLOC[I] ← PNTRS[I] ← 0;
18500			END;
18600			GO TO LOOP;
18700	END;